package controllers;

import play.mvc.*;
import controllers.Application;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import models.Tabref;
import models.Prato;
import models.Produto;

public class ControllerTabref extends Application {

	public static void showCardapio() throws SQLException {
		conectar();
		ResultSet rs1, rs2;
		List<Prato> list_prato = new ArrayList<Prato>();

		try {
			rs1 = comando
					.executeQuery("SELECT DISTINCT nome_prato,id_prato,preco FROM Potiguar.Prato");
			while (rs1.next()) {
				Prato prato = new Prato();
				prato.setId_prato(rs1.getInt("id_prato"));
				prato.setNome_prato(rs1.getString("nome_prato"));
				prato.setPreco(rs1.getFloat("preco"));
				list_prato.add(prato);
			}
			for (int i = 0; i < list_prato.size(); i++) {
				rs2 = comando
						.executeQuery("SELECT DISTINCT nome_produto FROM Potiguar.Tabref,Potiguar.Produto  WHERE Tabref.id_produto=Produto.id_produto AND  Tabref.id_prato="
								+ list_prato.get(i).getId_prato() + "");
				String string = new String();
				string = "vazio";
				while (rs2.next()) {
					if (string == "vazio") {
						string = rs2.getString("nome_produto");
					} else {
						string = string + "," + rs2.getString("nome_produto");
					}
				}
				list_prato.get(i).setImg_path(string);

			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		render(list_prato);

	}

	public static void doAddIngredientes(Produto produto, Tabref tabref,
			Prato pratoaux) throws SQLException {
		conectar();
		
		ResultSet rs, rs1;
		Prato pratoaux1 = new Prato();
		Produto produtoaux = new Produto();
		String string = new String();
		try {
			rs = comando
					.executeQuery("SELECT id_produto FROM Potiguar.Produto WHERE nome_produto= '"
							+ produto.getNome_produto() + "'");
			while (rs.next()) {

				produtoaux.setId_produto(rs.getInt("id_produto"));

			}
			rs1 = comando
					.executeQuery("SELECT id_prato FROM Potiguar.Prato WHERE nome_prato= '"
							+ pratoaux.getNome_prato() + "'");
			while (rs1.next()) {
				pratoaux1.setId_prato(rs1.getInt("id_prato"));
			}
			string = "INSERT INTO Potiguar.Tabref (id_prato,id_produto,quantidade_acomp) VALUES ("
					+ pratoaux1.getId_prato()
					+ ","
					+ produtoaux.getId_produto()
					+ ",'"
					+ tabref.getQuantidade_acomp() + "')";
			comando.executeUpdate(string);

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		AddIngredientes(pratoaux);

	}

	public static void AddIngredientes(Prato prato) throws SQLException {
		ResultSet result;
		List<Produto> list_produto = new ArrayList<Produto>();
		try {
			result = comando.executeQuery("SELECT * FROM Potiguar.produto ");
			while (result.next()) {
				Produto produto = new Produto();
				produto.setNome_produto(result.getString("nome_produto"));
				list_produto.add(produto);

			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		render(list_produto, prato);

	}

	public static void EditarIngredientes(Prato prato2) throws SQLException {
		conectar();
		ResultSet result;
		List<Produto> list_produto = new ArrayList<Produto>();
		try {
			result = comando
					.executeQuery("SELECT DISTINCT  nome_produto FROM Potiguar.Tabref,Potiguar.Produto WHERE id_prato ="
							+ prato2.getId_prato()
							+ "AND Potiguar.Tabref.id_produto=Potiguar.Produto.id_produto");
			while (result.next()) {
				Produto produto = new Produto();
				produto.setNome_produto(result.getString("nome_produto"));
				list_produto.add(produto);

			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		render(list_produto, prato2);
	}

	public static void doEditarIngredientes(Produto produto, Prato prato)
			throws SQLException {
		conectar();
		ResultSet rs, result;
		try {
			result = comando
					.executeQuery("SELECT* FROM Potiguar.produto WHERE nome_produto= '"
							+ produto.getNome_produto() + "'");
			while (result.next()) {
				produto.setId_produto(result.getInt("id_produto"));
			}
			rs = comando
					.executeQuery("SELECT quantidade_acomp FROM Potiguar.Tabref WHERE id_produto="
							+ produto.getId_produto()
							+ " AND id_prato="
							+ prato.getId_prato() + "");
			while (rs.next()) {
				produto.setQuantidade(rs.getFloat("quantidade_acomp"));
			}
		} catch (SQLException e) {

		}
		calledEditarIngredientes(produto, prato);
	}

	public static void calledEditarIngredientes(Produto produto, Prato prato) {
		render(produto, prato);
	}

	public static void docalledEditarIngredientes(Produto produtoaux,
			Prato pratoaux) throws SQLException {
		conectar();
		String string = new String();
		String stringaux = new String();
		try {
			string = "UPDATE Potiguar.Tabref SET quantidade_acomp="
					+ produtoaux.getQuantidade() + "WHERE id_produto="
					+ produtoaux.getId_produto() + " AND id_prato="
					+ pratoaux.getId_prato() + "";
			stringaux = "UPDATE Potiguar.Produto SET nome_produto='"
					+ "WHERE id_produto=" + produtoaux.getId_produto() + "";
			comando.executeUpdate(string);
			comando.executeUpdate(stringaux);
		} catch (SQLException e) {

		}
		EditarIngredientes(pratoaux);
	}

	public static void doAtualizacaoDiaria(Prato prato, int temp)
			throws SQLException {
		conectar();
		ResultSet rs, result;
		Prato pratoaux = new Prato();
		List<Produto> list_produto = new ArrayList<Produto>();
		List<Tabref> list_tabref = new ArrayList<Tabref>();
		String string = new String();
		try {
			rs = comando
					.executeQuery("SELECT id_prato FROM Potiguar.Prato WHERE nome_prato= '"
							+ prato.getNome_prato() + "'");
			while (rs.next()) {
				pratoaux.setId_prato(rs.getInt("id_prato"));

			}

			result = comando
					.executeQuery("SELECT id_produto,quantidade_acomp FROM Potiguar.tabref WHERE id_prato="
							+ pratoaux.getId_prato() + "");
			while (result.next()) {
				Tabref tabrefoaux = new Tabref();
				Produto produtoaux = new Produto();
				produtoaux.setId_produto(result.getInt("id_produto"));
				tabrefoaux.setQuantidade_acomp(result
						.getFloat("quantidade_acomp") * temp);
				list_produto.add(produtoaux);
				list_tabref.add(tabrefoaux);
			}
			for (int i = 0; i < list_produto.size(); i++) {
				string = new String();

				string = ("UPDATE Potiguar.Produto SET quantidade=quantidade-"
						+ list_tabref.get(i).getQuantidade_acomp()
						+ "WHERE id_produto="
						+ list_produto.get(i).getId_produto() + "");
				comando.executeUpdate(string);
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		showAtualizacaoDiaria();

	}

	public static void showAtualizacaoDiaria() throws SQLException {
		List<Prato> list_pratos = new ArrayList<Prato>();
		ResultSet result;
		int temp = 0;
		try {
			result = comando.executeQuery("select * from Potiguar.prato");
			while (result.next()) {
				Prato prato = new Prato();
				prato.setNome_prato(result.getString("nome_prato"));
				list_pratos.add(prato);

			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		render(list_pratos, temp);
	}

}
